Flutter 提供了两种形式的进度条:
- 圆形的:CircularProgressIndicator
- 线型的:LinearProgressIndicator
和 Android 不同的是,Flutter 的进度条都提供两种模式,精准进度和模糊进度,都分成两种形态,一种是显示具体进度值,一种是模糊的、只是在执行一个动画。
先看源码:
CircularProgressIndicator
const CircularProgressIndicator({
Key key,
double value, //进度(取值在 0-1 之间),如果设置该值,则显示具体的进度,如果该值为 null,则执行一个动画,模糊显示
Color backgroundColor, //进度背景色
Animation<Color> valueColor, //进度颜色
this.strokeWidth = 4.0, //进度条的宽度
String semanticsLabel, //进度条的Semantics.label
String semanticsValue,//进度条的Semantics.value
//上面两个属性,主要用于在 Android TalkBack 或者 iOS VoiceOver 使用,例如视障人士的使用
})
LinearProgressIndicator
const LinearProgressIndicator({
Key key,
double value,//进度(取值在 0-1 之间),如果设置该值,则显示具体的进度,如果该值为 null,则执行一个动画,模糊显示
Color backgroundColor,//进度背景色
Animation<Color> valueColor,//进度颜色
String semanticsLabel,//进度条的Semantics.label
String semanticsValue,//进度条的Semantics.value
//上面两个属性,主要用于在 Android TalkBack 或者 iOS VoiceOver 使用,例如视障人士的使用
})
进度条的使用很简单,但是我们看到,并没有属性可以控制进度条的大小,事实上,LinearProgressIndicator
和 CircularProgressIndicator
都是取父容器的尺寸作为绘制的边界的。所以我们只能通过控制进度条的父容器来设置进度条的大小。具体布局控件在后面会讲解。
flutter_spinkit 包提供了多种风格的模糊进度指示器,读者若是感兴趣,可以参考。